﻿''' <summary>
''' formulario de combate, antes de inicializarlo hay que darle valor a "ElMonstruo". 
''' </summary>
''' <remarks></remarks>
Public Class frmCombate
    Private frmCartasAtaque As frmVerCartasAtaques 'Para darles un solo valor. -P.d: hice algo con el héroe con motivo de facilitarlo todo. Si quieres dale un vistazo. Refactoricé los constructores OMC, uno de ellos estaba incompleto, ahora no tendremos nada que temer.

    Public ElMonstruo As clMonstruo 'Habrá que darle su valor ANTES de empezar.
    Private miCombate As New clCombate 'TODO ¿Dim? Mejor no sería private o public ¿o acaso pro defecto son algo? No sé pero dim me suena raro en esta posición del form... 
    Private estadisticas As Decimal
    Private monstruo_ataco As Boolean


    Private Sub frmCombate_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        frmCartasAtaque = New frmVerCartasAtaques
        For Each x As clHabilidad In MiHeroe.HabilidadesDelHeroe
            ListaTemporal.Add(x)
        Next 'Malditos objetModel... Dan ganas de quitarlos... Pero no confío en el resultado.
        lblVidaTotal.Text = MiHeroe.Vida
        lblVidaTotalM.Text = ElMonstruo.Vida
        lblVidaRestante.Text = MiHeroe.Vida
        lblVidaRestanteM.Text = ElMonstruo.Vida
        imgMalo.Image = ElMonstruo._imagen
        imgHeroe.Image = MiHeroe.imagen
        barraVidaMalo.Value = ElMonstruo.Vida
        barraVidaMalo.Maximum = ElMonstruo.Vida
        barraVida.Maximum = MiHeroe.Vida
    End Sub
    Private Sub btnVerCartas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        frmVerCartasObjeto.ShowDialog()
    End Sub


    Private Sub btnVerCartas_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerCartasAtaques.Click
        comprobar_siges_vivo()

        frmCartasAtaque.ShowDialog()
        Select Case (frmCartasAtaque.Tipo)
            Case "A"
                MiHeroe.AtaqueActual = miCombate.Ataque(MiHeroe.Ataque, frmCartasAtaque.Efecto)
                Me.Atacara_El_Mas_Rapido()
                ElMonstruo.VidaRestante = ElMonstruo.VidaRestante - MiHeroe.AtaqueActual
                barraVidaMalo.Value = ElMonstruo.VidaRestante
                lblVidaTotal.Text = MiHeroe.Vida
                lblVidaRestante.Text = MiHeroe.VidaRestante
                lblVidaRestanteM.Text = ElMonstruo.VidaRestante
                If MiHeroe.AtaqueActual = 0 Then
                    txtConsolaCombate.Text = "JAJA Has fallado pringado" & ControlChars.NewLine & txtConsolaCombate.Text
                Else
                    txtConsolaCombate.Text = "Ostion de " & MiHeroe.AtaqueActual & " de daño" & ControlChars.NewLine & txtConsolaCombate.Text
                    If monstruo_ataco = False Then
                        Comportamiento_Monstruo()
                    End If
                End If
            Case "D"
                Me.Atacara_El_Mas_Rapido()
                MiHeroe.DefensaActual = MiHeroe.DefensaActual + miCombate.Defensa(MiHeroe.Defensa, frmCartasAtaque.Efecto)
                lblDefensa.Text = MiHeroe.DefensaActual
                txtConsolaCombate.Text = "Tu defensa sube a " & MiHeroe.DefensaActual & " puntos" & ControlChars.NewLine & txtConsolaCombate.Text
                If monstruo_ataco = False Then
                    Comportamiento_Monstruo()
                End If
            Case "V"
                Me.Atacara_El_Mas_Rapido()
                MiHeroe.VelocidadActual = MiHeroe.VelocidadActual + miCombate.Velocidad(MiHeroe.Velocidad, frmCartasAtaque.Efecto)
                lblVelocidad.Text = MiHeroe.VelocidadActual
                txtConsolaCombate.Text = "Tu velocidad sube a " & MiHeroe.VelocidadActual & " puntos" & ControlChars.NewLine & txtConsolaCombate.Text
                If monstruo_ataco = False Then
                    Comportamiento_Monstruo()
                End If
            Case "S"
        End Select
        comprobar_siges_vivo()
    End Sub
    Private Sub Comportamiento_Monstruo()
        comprobar_siges_vivo()
        Dim habilidad As clHabilidad = ElMonstruo.atacara()
        Select Case (habilidad.llamar_Tipo)
            Case "A"
                ElMonstruo.AtaqueActual = miCombate.Ataque(ElMonstruo.Ataque, habilidad.llamar_Efecto)
                MiHeroe.VidaRestante = MiHeroe.VidaRestante - ElMonstruo.AtaqueActual
                barraVida.Value = MiHeroe.VidaRestante
                lblVidaRestante.Text = MiHeroe.VidaRestante
                lblVidaRestanteM.Text = ElMonstruo.VidaRestante
                comprobar_siges_vivo()
            Case "D"
                ElMonstruo.DefensaActual = ElMonstruo.DefensaActual + miCombate.Defensa(ElMonstruo.Defensa, habilidad.llamar_Efecto)
                lblDefensaM.Text = ElMonstruo.DefensaActual
                comprobar_siges_vivo()
            Case "V"
                ElMonstruo.VelocidadActual = ElMonstruo.VelocidadActual + miCombate.Velocidad(ElMonstruo.Velocidad, habilidad.llamar_Efecto)
                lblVelocidadM.Text = ElMonstruo.VelocidadActual
                comprobar_siges_vivo()
        End Select
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerEstadisticas.Click
        estadisticas = estadisticas + 1
    End Sub
    Private Sub Atacara_El_Mas_Rapido()
        If MiHeroe.VelocidadActual < ElMonstruo.VelocidadActual Then
            Comportamiento_Monstruo()
            monstruo_ataco = True
        End If
    End Sub

    Private Sub comprobar_siges_vivo()
        If MiHeroe.Vivo = False Then
            MessageBox.Show("Muriste")
            Me.Close()
        Else
            If ElMonstruo.Vivo = False Then
                MessageBox.Show("Murio")
                MiHeroe.Inventario.AñadirObjeto(ElMonstruo.Vencido())

                Me.Close()
            End If
        End If
    End Sub

    Private Sub lblVidaRestanteM_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblVidaRestanteM.Click

    End Sub
End Class
